<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
  <title>使用ognl查看值栈中的指定值</title>
</head>
<body>
<div align="center">
  <s:if test="users.size>0">
    返回users的name集合<s:select list="users.{name}" /><br>
    迭代users的telephone并依次打印其中的每个非空telephone<br>
    <!-- 将每个遍历的telephone的值赋值变量tel并依次将其压入值栈 -->
    <!-- 将一个指向IteratorStatus实例的引用变量s压入每个遍历的值栈 -->
    <s:iterator value="users.{telephone}" var="tel" status="s">
      <!-- 从值栈中读取变量tel的值，如果tel的值不是空字符串 -->
      <s:if test="#tel!=''">
        <!-- 打印tel的值 -->
        <s:property value="#tel" />
        <!-- 以users的getTelephone()为集合，打印索引为当前IteratorStatus实例的getIndex()的getTelephone()的值 -->
        <s:property value="users.{telephone}[#s.index]" /><br>
      </s:if>
    </s:iterator>
    返回所有sex为m的users的name集合<s:select list="users.{?#this.sex=='m'}.{name}" /><br>
    返回所有sex为f的users的第一个name<s:property value="users.{^#this.sex=='f'}.{name}" /><br>
    返回所有sex为m的users的最后一个name<s:property value="users.{$#this.sex=='m'}.{name}" />
    <table width="60%" border="1px solid black" cellspacing="0">
      <tr>
        <th>名字</th>
        <th>性别</th>
        <th>电话</th>
        <th>生日</th>
      </tr>
      <s:iterator value="users" var="user" status="s">
        <tr>
          <td><s:property value="#user.name" /></td>
          <!-- 以users为集合，打印索引为当前IteratorStatus实例的getIndex()的user的getSex()的值 -->
          <td><s:property value="users[#s.index].sex" /></td>
          <td><s:property value="#user.telephone" /></td>
          <!-- 以users为集合，打印索引为比当前IteratorStatus实例的getCount()小1的user的getBirthdate()的值 -->
          <td><s:property value="users[#s.count-1].birthdate" /></td>
        </tr>
      </s:iterator>
    </table>
  </s:if>
  <s:else>没有用户信息</s:else>
</div>
</body>
</html>
